[C#] Wykorzystanie BindingSource w module logowania.

Witam

Mam formatkę na której jest do wpisania hasło i login, są to zwykłe tekst boksy z DataSet-a. Moje pytanie, jak sprawdzić czy w bazie (tudzież w DataSet) jest taki użyt jakiego się wpisze. Domniemam że można to zrobić to jakoś BindingSource, ale nie wiem jak manualnie ustawić kursor na danym rekordzie i wprowadzić BS w tryb wyszukiwania ;)

Pozdrawiam Michał

2 lata, 3 miesiące temu | edytowane przez: tomaszs 18543629

  • Trochę masz niewłaściwy design tego czegoś. Bindowanie pól służących do wprowadzenia nazwy użytkownika i hasła do datasetu nie ma najmniejszego sensu - naprawdę chcesz zaciągnąć wszystkich użytkowników wraz z hasłami do aplikacji i sprawdzać lokalnie, czy któraś z par nazwa/hasło się zgadza?

    (BTW, wiesz że DataSet to lokalny cache danych, offline względem bazy, a nie odpowiednik kursoro-podobnych klas z Delphi?)

    W .NET Framework nie ma klas, które by miały funkcjonalność zbliżoną do Locate z Delphi. Tu raczej musisz przygotować zapytanie - czy to za pomocą SqlCommand, czy to przez LINQ - i wywołać je względem bazy danych, po czym sprawdzić co dostaniesz w rezultacie. Po prostu inaczej to działa.

    Tak czy inaczej - jak zawsze zachęcam do przyjrzenia się jakiejś bibliotece ORM z prawdziwego zdarzenia, np. NHibernate, która zdejmuje z głowy wiele problemów związanych z dostępem do danych.

  • Możesz użyć do tego LINQ które odpalisz zna DataTable które jest podstawą dla Twojego BIndingu w ten sposób:

    bool CzyJest(string login, string haslo)
    {
        var Liczba = from DataRow dr in dt.Rows
                          where dr['LOGIN'] = login AND dr['HASLO'] = haslo
                          select dr;
    
        return (Liczba.Count() > 0);
    }
    

  • Dobre, niezłe, fajne... Tylko Tomku, ja bym chciał żeby to się działo z automatu, np. VCL/IBX była taka metoda Locate...

    jakieś inne propozycje? :P

Zaloguj się, aby dodać swoją odpowiedź